# PANDUAN GENERATOR ATP + RPM
### Kurikulum Nasional 2025 — SMK/MAK (Fase E dan Fase F)

Paket ini berisi **dua generator yang memakai satu mesin yang sama**, sehingga
ATP dan RPM tidak mungkin berbeda angka:

| Berkas | Kegunaan |
|---|---|
| `atpgen/atp.py` | Membuat **ATP** (Alur Tujuan Pembelajaran) — 1 DOCX per mata pelajaran per kelas |
| `atpgen/rpm.py` | Membuat **RPM** (Rancangan Pembelajaran Mendalam) — per Elemen/CP atau per kelompok Tujuan Pembelajaran |
| `atpgen/cp_db.json` | Basis data Capaian Pembelajaran resmi (218 mata pelajaran) |
| `atpgen/build_db.py` | Pembangun basis data dari PDF sumber (tidak perlu dijalankan lagi) |

---

---

## PEMBARUAN v5 - RPM DITENTUKAN DARI TUJUAN PEMBELAJARAN

Tiga hal berubah dibanding v4.

**1. Bagian C PENGALAMAN BELAJAR kini diuraikan untuk SETIAP pertemuan.**
Dulu hanya ditulis satu kali sebagai "pola tiap pertemuan". Sekarang bila satu
unit RPM berisi 13 pertemuan, di dalam DOCX itu ada 13 uraian AWAL-INTI-PENUTUP,
masing-masing dengan Tujuan Pembelajaran dan fokus materinya sendiri. Karena itu
halaman Word memang menjadi panjang, dan itu memang yang dikehendaki.

Setiap pertemuan dibedakan secara wajar:
- pertemuan pertama memuat asesmen awal (Lampiran 1) dan kesepakatan kelas;
- pertemuan tengah memuat peninjauan hasil pertemuan sebelumnya;
- pertemuan terakhir memuat asesmen akhir (Lampiran 3) beserta remedial dan pengayaan.

**2. Capaian Pembelajaran dipecah menjadi Tujuan Pembelajaran yang cukup rinci.**
Ada mata pelajaran yang satu semesternya hanya 2 CP, padahal pertemuannya 22 kali.
Mesin kini menurunkan TP sebanyak jumlah pertemuan, berjenjang dari sumber yang
paling sahih lebih dulu:

| Lapis | Sumber | Contoh |
|---|---|---|
| 1 | klausa Capaian Pembelajaran | dipisah pada tanda titik koma |
| 2 | sub-frasa perincian di dalam klausa | dipisah pada koma, "serta", "dan" |
| 3 | deskripsi elemen pada tabel Karakteristik dokumen CP | |
| 4 | tahap kognitif bertingkat atas pokok materi yang sama | mengidentifikasi, menjelaskan, menerapkan, menganalisis, mengevaluasi, menyajikan |

Lapis 4 tidak menambah materi baru. Ia hanya menaikkan tuntutan berpikir atas
materi yang memang sudah tertulis di dalam Capaian Pembelajaran, sehingga tidak
ada isi yang dikarang.

**3. Ada lingkup keempat: kelompok Tujuan Pembelajaran.**
Pada langkah [6] form RPM sekarang tersedia:

```
[1] 2 semester penuh   -> 1 DOCX per elemen, semua pertemuan diuraikan
[2] 1 semester         -> 1 DOCX per elemen, semua pertemuan diuraikan
[3] 1 Elemen/CP        -> 1 DOCX, semua pertemuan diuraikan
[4] Kelompok TP        -> daftar TP ditampilkan, Anda ketik nomornya
```

Pada pilihan [4], program mencetak daftar TP bernomor untuk semester itu, lalu
Anda cukup mengetik nomor yang dikehendaki:

```
    TP mana yang dijadikan RPM ini? (mis. 1,2,4 / 1-5 / semua): 1,2,4
    TP per pertemuan [1]: 1
    3 TP / 1 TP per pertemuan = 3 pertemuan = 6 JP (270 menit)
```

Isian **TP per pertemuan** menjawab kebutuhan "satu pertemuan merangkum beberapa
TP". Bila diisi `2` dan Anda memilih 6 TP, hasilnya 3 pertemuan.

**Sinkronisasi dengan ATP tetap terjaga.** Pada lingkup [1], [2], dan [3], jumlah
pertemuan dikunci pada angka ATP; bila TP lebih banyak dari pertemuan, TP dibagi
rata ke pertemuan yang tersedia. Pada lingkup [4], alokasi dihitung dari jumlah
pertemuan x JP per pertemuan memakai angka JP yang sama dengan ATP.

Lewat CLI:

```
py atpgen\rpm.py --mapel "bahasa inggris" --kelas X --jp 4 --jpp 2 ^
                 --lingkup tp --semester ganjil --tp "1-6" --tp-per-pertemuan 2
```

---

---

## PEMBARUAN v6 - PILIH CP DULU, TP-NYA LANGSUNG DITAMPILKAN

Pada lingkup keempat (kelompok Tujuan Pembelajaran), urutan pertanyaannya kini
bertingkat dan sesuai kenyataan mengajar: satu CP memuat beberapa TP, jadi CP
dipilih lebih dulu, lalu TP milik CP itu saja yang ditampilkan.

```
[6] Lingkup pembuatan RPM -> 4

    Semester yang tersedia:
      - 1 - SEMESTER 1 (GANJIL)
      - 2 - SEMESTER 2 (GENAP)
    Isikan nomor semester atau tulis ganjil/genap [1]: 1

    Elemen/CP pada SEMESTER 1 (GANJIL):
      1. Menyimak - Berbicara
         44 JP | 22 pertemuan | 22 Tujuan Pembelajaran
      2. Membaca - Memirsa
         32 JP | 16 pertemuan | 16 Tujuan Pembelajaran
      0. Semua Elemen/CP pada semester ini
    Pilih nomor Elemen/CP [1]: 2

    --------------------------------------------------------------------
    ELEMEN 2: Membaca - Memirsa
    Capaian Pembelajaran:
      Memahami alur informasi secara keseluruhan, menganalisis dan
      menyimpulkan informasi tersurat dan tersirat dari berbagai jenis teks...
    --------------------------------------------------------------------
    Tujuan Pembelajaran turunan dari Capaian Pembelajaran di atas:
       1. Murid mampu memahami alur informasi secara keseluruhan.
       2. Murid mampu menganalisis dan menyimpulkan informasi tersurat dan...
       3. Murid mampu mengidentifikasi bagian, istilah, dan konsep kunci...
      ...
    --------------------------------------------------------------------
    Tersedia 16 TP. Satu pertemuan = 2 JP = 90 menit.

    TP mana yang dijadikan RPM ini? (mis. 1,2,4 / 1-5 / semua): 1,2,3
    TP per pertemuan [1]: 1
```

Setelah CP dipilih, nomor TP dihitung ulang mulai dari 1 untuk CP itu, sehingga
nomor yang Anda ketik selalu sama dengan nomor yang tampil di layar. Bila ingin
memilih TP dari beberapa CP sekaligus, ketik `0` (semua Elemen/CP) - nomor TP
akan berjalan lurus melintasi CP seperti pada v5.

Lewat CLI, CP dibatasi dengan `--elemen`:

```
py atpgen\rpm.py --mapel "bahasa inggris" --kelas X --jp 4 --jpp 2 ^
                 --lingkup tp --semester ganjil --elemen 2 ^
                 --tp "1-4" --tp-per-pertemuan 2
```

### Dua perbaikan mutu rumusan Tujuan Pembelajaran

1. **Terjemahan bahasa Inggris di dalam tanda kurung tidak lagi ikut menjadi TP.**
   Dokumen CP mata pelajaran bahasa memuat terjemahan dalam kurung, termasuk
   kurung bersarang. Bagian itu sekarang disaring, sedangkan kurung berbahasa
   Indonesia (singkatan atau contoh) tetap dipertahankan.
2. **Setiap TP dipastikan berkata kerja.** Pecahan klausa yang tidak berkata kerja
   - misalnya "tersirat dari berbagai jenis teks" - tidak lagi berdiri sendiri,
   melainkan disatukan kembali dengan pecahan sebelumnya agar rumusannya utuh
   dan setia pada naskah CP.

Karena `atp.py` ikut diperbaiki, seluruh contoh ATP di dalam paket ini juga
dibuat ulang agar ATP dan RPM tetap memakai rumusan TP yang sama.

---

---

## PEMBARUAN v7 - 1 RPM = 1 MATERI POKOK = BEBERAPA PERTEMUAN

Ini lingkup yang disarankan untuk pemakaian sehari-hari, dan menjadi pilihan
nomor **5** pada form.

Logikanya berlapis dan mengikuti kenyataan mengajar:

```
1 Capaian Pembelajaran
   -> beberapa Tujuan Pembelajaran
        -> dikelompokkan menjadi beberapa Materi Pokok
             -> 1 Materi Pokok = 1 berkas DOCX = beberapa kali pertemuan
```

Jadi satu CP tidak lagi selalu menjadi satu berkas. CP pertama Dasar-Dasar
Teknik Otomotif, misalnya, beralokasi 77 JP = 7 pertemuan dan memuat 7 TP,
sehingga terpecah menjadi 3 berkas:

```
[Elemen 1] Wawasan Dunia Otomotif -- 77 JP | 7 pertemuan | 7 TP -> 3 berkas
   1) Wawasan dunia usaha, dunia industri, dunia kerja bidang otomotif
      3 TP | 3 pertemuan | 33 JP
   2) Perkembangan teknologi pada berbagai komponen, jenis produk otomotif
      2 TP | 2 pertemuan | 22 JP
   3) Perubahan iklim dan penggunaan kecerdasan buatan pada bidang otomotif
      2 TP | 2 pertemuan | 22 JP
```

Jumlah pertemuan seluruh berkas selalu dijaga sama dengan jumlah pertemuan CP
itu menurut ATP, sehingga ATP dan RPM tidak pernah berselisih alokasi waktu.

### Satu pertemuan boleh memuat lebih dari satu TP

Jatah pertemuan tiap Materi Pokok dihitung sebanding dengan jumlah TP di
dalamnya. Bila jumlah TP melebihi jumlah pertemuan yang tersedia, satu
pertemuan otomatis merangkum beberapa TP; bila TP lebih sedikit, satu TP
diuraikan dalam beberapa pertemuan. Rinciannya ditampilkan di layar sebelum
berkas dibuat.

### Nama Materi Pokok tidak dikarang

Nama tiap Materi Pokok diambil dari kolom **Materi Pokok** pada ATP mata
pelajaran yang sama, sehingga nama topik di RPM sama dengan yang tertulis di
ATP. Calon nama yang berupa potongan kalimat, kata sambung, atau terjemahan
bahasa Inggris di dalam tanda kurung disaring lebih dulu. Bila ATP tidak
menyediakan nama yang layak, dipakai pokok materi dari TP pertama pada
kelompok itu. Nama Materi Pokok inilah yang mengisi baris "Materi Pokok" pada
tabel IDENTITAS dan menjadi nama berkas DOCX.

### Tampilan form

```
[6] Lingkup pembuatan RPM
      1. 2 semester penuh
      2. 1 semester
      3. 1 Elemen/CP
      4. Kelompok Tujuan Pembelajaran - pilih sendiri TP mana saja
      5. 1 Materi Pokok = 1 DOCX  <- disarankan
    Pilih nomor [5]: 5

    Isikan nomor semester atau tulis ganjil/genap [1]: 1

    Elemen/CP pada SEMESTER 1 (GANJIL):
      1. Wawasan Dunia Otomotif
         77 JP | 7 pertemuan | 7 Tujuan Pembelajaran
      2. Kecakapan Kerja Dasar, K3, dan Budaya Kerja
         55 JP | 5 pertemuan | 5 Tujuan Pembelajaran
      0. Semua Elemen/CP pada semester ini
    Pilih nomor Elemen/CP [1]: 1

    Satu berkas RPM = satu Materi Pokok = beberapa pertemuan.
    Kosongkan untuk pembagian otomatis (+- 3 pertemuan per Materi Pokok).
    Jumlah Materi Pokok per Elemen/CP [otomatis]:

    --------------------------------------------------------------------
    RENCANA PEMBAGIAN BERKAS
    --------------------------------------------------------------------
    [Elemen 1] Wawasan Dunia Otomotif
        77 JP | 7 pertemuan | 7 TP -> 3 berkas DOCX
        1) Wawasan dunia usaha, dunia industri, dunia kerja bidang otomotif
           3 TP | 3 pertemuan | 33 JP | 1.0 TP per pertemuan
        2) Perkembangan teknologi pada berbagai komponen, jenis produk
           2 TP | 2 pertemuan | 22 JP | 1.0 TP per pertemuan
        3) Perubahan iklim dan penggunaan kecerdasan buatan pada bidang
           2 TP | 2 pertemuan | 22 JP | 1.0 TP per pertemuan
    --------------------------------------------------------------------
    Jumlah berkas DOCX yang akan dibuat: 3
```

Ketik `0` pada pertanyaan Elemen/CP untuk mengerjakan seluruh CP pada semester
itu sekaligus; penomoran berkas berjalan lurus melintasi CP.

### Lewat CLI

```
py atpgen\rpm.py --mapel "dasar-dasar teknik otomotif" --kelas X ^
                 --jp 11 --jpp 11 --lingkup topik ^
                 --semester ganjil --elemen 1
```

Tambahkan `--topik-per-cp 2` bila ingin memaksa jumlah Materi Pokok per CP,
misalnya menyatukan menjadi 2 berkas saja. Kosongkan agar dibagi otomatis.

---

## 1. Cara paling mudah (Windows)

Klik ganda **`JALANKAN.bat`**, lalu pilih dari menu:

```
[1] Buat ATP
[2] Buat RPM
[3] Cari nama mata pelajaran
```

Atau langsung: **`BUAT ATP.bat`**, **`BUAT RPM.bat`**, **`CARI MAPEL.bat`**.

Semua hasil tersimpan **di folder tempat berkas .bat itu berada**:
- ATP → `ATP <NAMA MAPEL> - KELAS <kelas> FASE <fase>.docx`
- RPM → folder `RPM <NAMA MAPEL> - KELAS <kelas> FASE <fase>/` berisi beberapa DOCX

---

## 2. Isian form RPM (8 langkah)

| No | Isian | Keterangan |
|---|---|---|
| 1 | Mata Pelajaran | cukup kata kunci, mis. `otomotif`, `bahasa indonesia` |
| 2 | Kelas | `X` (Fase E), `XI` atau `XII` (Fase F) |
| 3 | JP per minggu | dari struktur kurikulum, mis. 11 |
| 4 | JP dalam 1x pertemuan | mis. 4 JP/minggu dibagi 2 hari → isi `2` |
| 5 | Minggu efektif | ganjil (lazim 17–22) dan genap (lazim 13–16) |
| 6 | Lingkup | `1` = 2 semester, `2` = 1 semester, `3` = 1 Elemen/CP, `4` = pilih CP lalu pilih TP-nya, `5` = 1 Materi Pokok per berkas |
| 7 | Identitas | Instansi, NPSN, Penyusun, Kelas/rombel, Kota, Tahun Pelajaran |
| 8 | Daftar murid | kosongkan = 10 nama contoh, atau tunjuk berkas `.txt` |

**Minggu efektif bukan pertemuan.** Dalam 1 minggu bisa ada beberapa pertemuan.
Rumus yang dipakai program:

```
pertemuan per minggu = JP per minggu ÷ JP per pertemuan
JP satu semester     = minggu efektif × JP per minggu
menit satu pertemuan = JP per pertemuan × 45 menit
```

Kalau JP per minggu tidak habis dibagi JP per pertemuan, program **menolak** dan
menyebutkan angka pembagi yang pas.

### Daftar murid dari berkas .txt
Buat berkas `murid.txt` di folder yang sama, satu nama per baris:

```
Adinda Puspa Maharani
Bagas Arya Pratama
...
```
Lalu tulis `murid.txt` pada langkah 8. Nomor urut di depan nama otomatis dibuang.

---

## 3. Pembagian semester (otomatis, tidak perlu dihitung sendiri)

| Fase | Kelas | Semester |
|---|---|---|
| E | X | Semester 1 (Ganjil) + Semester 2 (Genap) |
| F | XI | Semester 3 (Ganjil) + Semester 4 (Genap) |
| F | XII | Semester 5 = **PKL, tidak dibuat** + Semester 6 (Genap) |

Aturan pembagian elemen:
- Elemen dibagi rata; **sisa dilebihkan ke semester ganjil** (minggu efektifnya lebih banyak).
- Fase F: kira-kira dua pertiga elemen untuk Kelas XI, sisanya Kelas XII.
  Bisa diatur sendiri lewat `--elemen-kelas11`.
- Bobot minggu tiap elemen mengikuti banyaknya butir Capaian Pembelajaran,
  lalu dibulatkan agar jumlahnya **tepat** sama dengan minggu efektif.

---

## 4. Isi berkas RPM

Satu DOCX RPM memuat:

1. **IDENTITAS** — Nama Instansi, NPSN, Penyusun, Mata Pelajaran, Fase, Kelas,
   Alokasi Waktu, Materi Pokok.
2. **A. IDENTIFIKASI** — Murid (pengetahuan awal, minat, latar belakang,
   kebutuhan belajar 3 kelompok, catatan keberagaman), Materi Pelajaran
   (pengetahuan esensial / aplikatif / nilai dan karakter, relevansi, tingkat
   kesulitan, struktur materi), dan **8 Dimensi Profil Lulusan** dengan kotak
   ☑/☐ — hanya dimensi yang benar-benar dilatih yang ditandai.
3. **B. DESAIN PEMBELAJARAN** — Elemen, Capaian Pembelajaran (kutipan apa adanya
   + catatan sumbernya), Lintas Disiplin Ilmu, Tujuan Pembelajaran **per
   pertemuan**, Topik, Praktik Pedagogis (Model/Strategi/Metode + dasar
   pemilihannya), Kemitraan, Lingkungan, Pemanfaatan Digital.
4. **C. PENGALAMAN BELAJAR** — AWAL, INTI (**Memahami – Mengaplikasi –
   Merefleksi**, lengkap dengan sintaks model dan pembagian menit), PENUTUP.
5. **D. ASESMEN PEMBELAJARAN** — awal (*assessment for learning*), proses
   (*as/for learning*), akhir (*of learning*), KKTP ≥ 75, beserta tindak lanjut.
6. **Catatan sumber** — menyebut Lampiran dan butir CP yang dikutip serta
   alokasi waktu yang diambil dari ATP (bukti ATP dan RPM sinkron).
7. **LAMPIRAN 1–4** — instrumen lengkap + form penilaian yang sudah berisi nama murid:
   - Lampiran 1: pertanyaan diagnostik, rubrik kategori, form pemetaan kesiapan
   - Lampiran 2: rubrik observasi kinerja 4 kriteria (skala 1–4) + lembar observasi
   - Lampiran 3: kisi-kisi, butir asesmen, pedoman penskoran, daftar nilai, tindak lanjut
   - Lampiran 4: penilaian diri, penilaian antarteman, jurnal refleksi Murid,
     refleksi guru, dan kolom tanda tangan

---

## 5. Penyesuaian otomatis menurut watak mata pelajaran

Program mengenali watak mata pelajaran (kejuruan / seni / olahraga / bahasa /
informatika / umum) dari nama mapel, nama elemen, dan bunyi CP. Yang menyesuaikan:

| Bagian | Contoh penyesuaian |
|---|---|
| Praktik Pedagogis | kejuruan → Praktik Terbimbing/PjBL; bahasa → Kontekstual/Inkuiri; seni → PjBL |
| Ruang & sumber | bengkel + service manual, sanggar/studio, lapangan, laboratorium komputer, perpustakaan |
| Asesmen akhir | unjuk kerja + jobsheet, pertunjukan karya, tes praktik gerak, portofolio teks |
| Rubrik | kriteria K3 dan budaya kerja hanya muncul pada mapel praktik |
| Bentuk butir | uraian, unjuk kerja, produk — mengikuti level kognitif Tujuan Pembelajaran |

**Pemilihan model** diambil dari kata kerja operasional pada Tujuan
Pembelajaran (level C1–C6), dan alasannya dicetak di dalam dokumen pada baris
*“Dasar pemilihan”* supaya bisa dipertanggungjawabkan saat supervisi.

---

## 6. Menjalankan lewat baris perintah (opsional)

```bat
rem ATP
py atpgentp.py --mapel "dasar-dasar teknik otomotif" --kelas X --jp 11 --jpp 11 --mg 22 --mn 15

rem RPM — 1 Elemen/CP saja (elemen pertama)
py atpgen
pm.py --mapel "dasar-dasar teknik otomotif" --kelas X --jp 11 --jpp 11 --lingkup elemen --elemen 1

rem RPM — 1 semester
py atpgen
pm.py --mapel "bahasa indonesia" --kelas X --jp 4 --jpp 2 --lingkup semester --semester ganjil

rem RPM — 2 semester penuh
py atpgen
pm.py --mapel "teknik sepeda motor" --kelas XI --jp 8 --jpp 4 --mg 20 --mn 14 --lingkup tahun

rem Cari nama mata pelajaran
py atpgentp.py --list otomotif
```

Pilihan lain: `--instansi --npsn --penyusun --rombel --kota --tahun --murid
--menit --elemen-kelas11 --out-dir`.

---

## 7. Sumber rujukan (supaya isi dokumen bisa dipertanggungjawabkan)

| Bagian dokumen | Sumbernya |
|---|---|
| Elemen dan Capaian Pembelajaran | **Keputusan Kepala BSKAP Nomor 046/H/KR/2025** — dikutip apa adanya dari Lampiran II (mapel umum) dan Lampiran III (kejuruan) |
| Deskripsi elemen | tabel Karakteristik pada dokumen CP yang sama |
| Alokasi waktu | hasil hitungan ATP dari isian minggu efektif dan JP |
| Kerangka RPM | format templat resmi RPM + paparan **Rancangan Pembelajaran Mendalam** (prinsip berkesadaran–bermakna–menggembirakan; pengalaman Memahami–Mengaplikasi–Merefleksi; Praktik Pedagogis, Kemitraan, Lingkungan, Pemanfaatan Digital) |
| 8 Dimensi Profil Lulusan | urutan resmi DPL1–DPL8 |

Program **tidak menyambung ke internet dan tidak memakai API key**. Seluruh isi
disusun dari basis data CP resmi dengan aturan yang sudah ditetapkan, sehingga
hasilnya dapat diulang dan diperiksa.

---

## 8. Yang tetap perlu diperiksa guru

1. **NPSN dan nama Penyusun** — bawaannya titik-titik, isikan sesuai sekolah.
2. **Minggu efektif** — sesuaikan dengan kalender pendidikan sekolah.
3. **Daftar murid** — ganti 10 nama contoh dengan daftar kelas sesungguhnya.
4. **Sub-topik dan materi** — boleh ditambah sesuai sarana bengkel/laboratorium.
5. **Ukuran kertas** — ATP dibuat lanskap F4, RPM potret A4. Silakan diubah bila
   format sekolah berbeda.

---

## 9. Bila ada masalah

| Gejala | Sebabnya | Jalan keluar |
|---|---|---|
| `Python was not found` | Python belum terpasang / belum masuk PATH | pasang dari python.org, centang **Add python.exe to PATH** |
| `python3` tidak dikenal | di Windows perintahnya `py` | pakai `py`, atau cukup klik `JALANKAN.bat` |
| `No module named docx` | python-docx belum ada | `py -m pip install python-docx` |
| Hasil tidak ketemu | dicari di folder yang salah | hasil ada di folder tempat `.bat` berada |
| `Jumlah elemen melebihi minggu efektif` | minggu efektif terlalu sedikit | naikkan minggu efektif atau kurangi elemen per semester |

---

## 10. PEMBARUAN v8 — KKTP dan satu pintu generator

### 10.1 Tiga dokumen, satu mesin

Sekarang paket ini membuat **tiga** dokumen dari satu kali pengisian data:

| Dokumen | Isi | Berkas |
|---|---|---|
| **ATP** | Alur Tujuan Pembelajaran, 8 kolom, 2 semester | 1 DOCX |
| **RPM** | Rancangan Pembelajaran Mendalam, 1 Materi Pokok = 1 berkas | beberapa DOCX |
| **KKTP** | Kriteria Ketercapaian Tujuan Pembelajaran, 4 interval | 1 DOCX per semester |

Ketiganya memakai mesin yang sama (`susun_rencana`), sehingga **elemen, Capaian
Pembelajaran, rumusan Tujuan Pembelajaran, jumlah pertemuan, dan alokasi waktu
selalu sama** di ATP, RPM, dan KKTP. Tidak ada lagi selisih antar dokumen.

### 10.2 Cara menjalankan

Klik dua kali **`JALANKAN.bat`**. Isi data pokok satu kali, lalu pilih menu:

```
    1. ATP  - Alur Tujuan Pembelajaran (1 berkas, 2 semester)
    2. RPM  - 1 Materi Pokok = 1 berkas DOCX
    3. KKTP - Kriteria Ketercapaian Tujuan Pembelajaran
    4. PAKET LENGKAP - ATP + KKTP + RPM sekaligus (sinkron)
    5. RPM pengaturan lanjutan (pilih sendiri lingkup/TP)
    6. Lihat rencana isi dokumen (elemen, TP, pertemuan)
    7. Ubah data pokok / identitas
    0. Keluar
```

Data pokok dan identitas tersimpan pada `atpgen/identitas.json`, jadi pemakaian
berikutnya tidak perlu mengisi ulang nama dan NPA. Untuk satu dokumen saja,
tersedia juga `BUAT ATP.bat`, `BUAT RPM.bat`, dan `BUAT KKTP.bat`.

### 10.3 Identitas dan tanda tangan

* **Kepala Sekolah sudah permanen** di ATP, RPM, dan KKTP:
  **YAKUB ISHAK, S.E. — NPA. 05011100009**. Tidak ditanyakan lagi pada form.
* **Guru Mata Pelajaran wajib diisi lewat form**: nama/penyusun dan NPA.
  Keduanya tampil pada baris identitas **dan** kolom tanda tangan.
* Tanggal kolom tanda tangan memakai kota dan bulan berjalan, mis.
  "Jambi, Juli 2026".
* Bentuk blok tanda tangan seragam untuk ketiga dokumen: kiri Kepala Sekolah,
  kanan Guru Mata Pelajaran, masing-masing dengan NPA di bawah nama.

### 10.4 Isi berkas KKTP

Identitas: Satuan Pendidikan, Mata Pelajaran, Kelas / Konsentrasi Keahlian,
Fase / Semester, Tahun Pelajaran, lalu **Capaian Pembelajaran yang terisi
otomatis** sesuai mata pelajaran (bila satu berkas memuat beberapa elemen, CP
ditulis bernomor per elemen).

Tabel tujuh kolom: No, Elemen, Tujuan Pembelajaran, dan empat interval.

| Interval | Makna |
|---|---|
| 0-74% Perlu Bimbingan | belum mencapai, remedial seluruh bagian |
| 75-79% Cukup | belum tuntas, remedial bagian yang diperlukan |
| 80-91% Baik | sudah tuntas, tanpa remedial |
| 92-100% Sangat Baik | tuntas, perlu pengayaan atau tantangan lebih |

Deskriptor tiap interval **disusun dari kata kerja dan pokok materi Tujuan
Pembelajaran itu sendiri**, dan penyebutan mutu kerjanya menyesuaikan watak
mapel (kejuruan memakai "sesuai SOP dan K3", bahasa memakai "sesuai kaidah
kebahasaan", seni memakai "kaidah dan nilai estetika"). Jadi tidak ada rumusan
yang mengambang atau tidak berkaitan dengan materinya.

### 10.5 Lewat perintah (opsional)

```
py atpgen/kktp.py --form
py atpgen/kktp.py --mapel "teknik sepeda motor" --kelas XI --jp 8 --jpp 4                   --lingkup semester --semester 3                   --penyusun "Nama Guru, S.Pd." --npa 05011100123                   --rombel "XI TSM 1" --konsentrasi "Teknik Sepeda Motor"
```

Lingkup KKTP: `tahun` (satu berkas per semester aktif), `semester`, `elemen`.

---

## 11. PEMBARUAN v9 — Tujuan Pembelajaran 4–8 butir per CP

### 11.1 Perubahan pokok

Sebelumnya jumlah Tujuan Pembelajaran mengikuti jumlah pertemuan, sehingga satu
TP terkesan untuk satu pertemuan. Itu **salah** dan sudah diperbaiki.

Sekarang:

* **Setiap Capaian Pembelajaran diturunkan menjadi 6 Tujuan Pembelajaran**
  (batas bawah 4, batas atas 8), berapa pun jumlah pertemuannya.
* **Satu pertemuan boleh memuat beberapa TP**, dan sebaliknya **satu TP boleh
  diuraikan dalam beberapa pertemuan** — mana yang dipakai ditentukan oleh
  alokasi waktu, bukan oleh jumlah TP.
* Pokok materi tiap TP diambil dari perincian yang benar-benar tertulis di
  dalam naskah CP (koma, "serta", "dan", "meliputi"), lalu diberi kata kerja
  dari CP itu sendiri. Tidak ada materi yang ditambah-tambahkan.
* **ATP, RPM, dan KKTP memakai daftar TP yang sama persis**, karena ketiganya
  mengambil dari satu mesin. Nomor dan rumusan TP di kolom ATP = TP di RPM =
  TP di baris KKTP.

Contoh, elemen **Wawasan Dunia Otomotif** (Dasar-Dasar Teknik Otomotif):

1. Murid mampu menjelaskan wawasan dunia usaha, dunia industri.
2. Murid mampu menjelaskan dunia kerja bidang otomotif.
3. Murid mampu menjelaskan perkembangan teknologi pada berbagai komponen, jenis
   produk otomotif, isu global, perubahan iklim.
4. Murid mampu menjelaskan penggunaan kecerdasan buatan pada bidang otomotif
   kendaraan ringan, kendaraan angkutan, sepeda motor, alat berat.
5. Murid mampu menjelaskan jenis produk otomotif.
6. Murid mampu menjelaskan isu global seperti perubahan iklim.

### 11.2 Form RPM kini ringkas

Yang ditanyakan hanya:

1. Mata Pelajaran
2. Kelas (X / XI / XII)
3. **JP dalam 1 minggu**
4. **Jumlah pertemuan dalam 1 minggu** (JP per pertemuan dihitung sendiri)
5. **Minggu efektif** semester ganjil dan genap
6. Bentuk berkas (lihat 11.3)
7. Identitas + nama/NPA Guru Mata Pelajaran
8. Daftar murid (opsional)

Sisanya dihitung sendiri: pembagian TP ke pertemuan, penentuan Materi Pokok,
dan **jumlah berkas RPM**. Sebelum berkas dibuat, tampil tabel
**RENCANA PEMBAGIAN BERKAS** berisi jumlah TP, JP, pertemuan, dan berapa berkas
per CP, sehingga bisa diperiksa lebih dulu.

### 11.3 Dua bentuk berkas RPM

| Bentuk | Isi satu berkas | Cocok untuk |
|---|---|---|
| **1. Per Materi Pokok** | 1 Materi Pokok, beberapa TP, beberapa pertemuan | RPM harian yang rinci |
| **2. 1 CP = 1 RPM** | 1 Capaian Pembelajaran, seluruh TP-nya, seluruh pertemuannya | hemat kertas saat dicetak |

Contoh Dasar-Dasar Teknik Otomotif Kelas X, 11 JP/minggu, 1 pertemuan/minggu,
22 minggu ganjil dan 15 minggu genap:

* Bentuk 1 → 9 berkas (ganjil) + 6 berkas (genap)
* Bentuk 2 → 4 berkas (ganjil) + 3 berkas (genap)

Keduanya menghabiskan alokasi waktu yang sama: **22 dan 15 pertemuan**.

### 11.4 Jaminan keselarasan

Untuk setiap semester berlaku:

```
jumlah pertemuan seluruh berkas RPM = minggu efektif x pertemuan per minggu
jumlah JP seluruh berkas RPM        = minggu efektif x JP per minggu
```

Sudah diuji pada Dasar-Dasar Teknik Otomotif, Teknik Sepeda Motor, Bahasa
Indonesia, Bahasa Inggris, Seni Tari, dan Matematika — Fase E maupun Fase F,
pada kedua bentuk berkas, semuanya cocok.

### 11.5 Lewat perintah (opsional)

```
py atpgen/rpm.py --form          (form ringkas)
py atpgen/rpm.py --lanjutan      (pengaturan lingkup/TP secara rinci)
```

---

## 13. PEMBARUAN v9.2 — RPM mengikuti basis data ATP

### Aturan "1 TP = 1 pertemuan" DIHAPUS

Sebelumnya jumlah pertemuan ikut dihitung dari jumlah Tujuan Pembelajaran,
sehingga JP pada RPM bisa berselisih dengan ATP. Sekarang urutannya dibalik:

1. **Jumlah pertemuan dan JP diambil tetap dari basis data ATP** per semester
   (minggu efektif × pertemuan per minggu). Angka ini tidak pernah diubah.
2. **Tujuan Pembelajaran yang menyesuaikan diri** terhadap angka tersebut:
   * TP lebih banyak daripada pertemuan → satu pertemuan memuat beberapa TP
     (misalnya 3 TP dalam 1 pertemuan bila topiknya berdekatan);
   * pertemuan lebih banyak daripada TP → satu TP menempati rentang
     pertemuan, ditulis apa adanya seperti **"Pertemuan 3–4"**.
3. Tidak ada lagi TP yang diulang sebagai pertemuan terpisah, dan tidak ada dua
   TP dengan rumusan kembar (bila dua elemen menghasilkan rumusan sama, butir
   kedua diberi konteks elemennya).

### Dua pilihan bentuk berkas RPM

Keduanya memakai jumlah pertemuan dan JP yang sama dengan ATP:

| Pilihan | Isi | Cocok untuk |
|---|---|---|
| **1. Otomatis per Materi Pokok** | 1 Materi Pokok = 1 berkas DOCX; jumlah berkas dihitung sendiri dari alokasi ATP satu semester | administrasi rinci |
| **2. Hemat kertas** | 1 CP = 1 berkas DOCX, memuat beberapa TP dan beberapa pertemuan sekaligus | irit kertas saat dicetak |

Contoh nyata (Dasar-Dasar Teknik Otomotif kelas X, 11 JP/minggu, 22 minggu):
semester 1 = **22 pertemuan / 242 JP**. Pilihan 1 menghasilkan 9 berkas,
pilihan 2 menghasilkan 4 berkas — jumlah pertemuan dan JP kedua-duanya tetap
22 pertemuan dan 242 JP.

### Model pembelajaran

* **Mapel kejuruan (Lampiran III)** — selalu **PJBL (Project Based Learning)**
  dengan model pendukung yang dipilih dari kata kerja TP.
* **Mapel umum (Lampiran II)** — bebas memakai model yang relevan dengan CP
  (inkuiri, pembelajaran berbasis masalah, praktik terbimbing, kontekstual).
